package main

import (
	"fmt"
	"jvmgo/ch02/classpath"
	"strings"
)

/*
编译生成的可执行文件由run and configuration设定
整个项目的可执行文件的名字叫myjvmimpl

测试：

 program argumetns: -cp ./java AddNoFunctionCall
*/
func main() {
	fmt.Print("-----start----------\n")
	cmd := parseCmd()
	if cmd.versionFlag {
		fmt.Println("version 0.0.1")
	} else if cmd.helpFlag || cmd.class == "" {
		printUsage()

	} else {
		startJVM(cmd)

	}
}

func startJVM(cmd *Cmd) {
	cp := classpath.Parse(cmd.XjreOption, cmd.cpOption)
	//会调用cp的String方法
	fmt.Printf("类路径:%v 类: %v 参数: %v\n", cp, cmd.class, cmd.args)
	className := strings.Replace(cmd.class, ".", "/", -1)
	classData, _, err := cp.ReadClass(className)
	if err != nil {
		fmt.Printf("找不到类文件%s\n", cmd.class)
		return
	}
	fmt.Printf("类的字节数据:%v\n", classData)

	fmt.Printf("类路径:%s 启动的类为:%s \n传递给类的参数:%v\n", cmd.cpOption, cmd.class, cmd.args)
}
